引言

這是一本用 Markdown 寫的書。邊把我架設系上 Ubuntu 伺服器時的過程記錄下來,這是我第一次寫書,撰寫時考慮的沒有那麼多,所以可能會有閱讀困難的情形。

本書會從虛擬環境的建立、安裝 Ubuntu、Ubuntu 環境設定、安裝 LAMP於 Ubuntu、安裝 Rstudio 與 RShiny 於Ubuntu…等,分章節介紹。

事前準備

引言

應用於實體電腦之前,我們會在虛擬機器內先執行過一遍,確認操作沒問題後,才會在實體點腦上操作。這裡我選用 VirtualBox 作為示範。

安裝 VirtualBox

先到 VirtualBox 官方網站的下載頁面,下載適合你電腦系統的安裝執行檔,假如是 Windows 系統就點擊 「Windows hosts」的下載連結,如果是其他作業系統就根據你的作業系統下載對應的檔案。

安裝的過程中只需使用預設的設定即可,預設設定做了安裝虛擬機器的驅動程式、關聯檔案…等等,正常安裝不需要變更它。

於虛擬機器安裝作業系統

再安裝完 VirtualBox 後,打開並不會有預先安裝好的作業系統,需要在 VirtualBox 內自行安裝作業系統。首先介紹 VirtualBox 的使用者介面:

VirtualBox 的操作介面

VirtualBox 的操作介面

如 @ref(fig:virtualbox-menu) 所示,右邊主要功能圖示由左而右的功能分別是:

  1. 喜好設定: 設定 VirtualBox 的整體設定,像是軟體語言、虛擬機器預設存放位置…等等
  2. 匯入: 匯入虛擬機器檔案 (.ovf)
  3. 匯出: 匯出虛擬機器檔案
  4. 新增: 新增新的虛擬主機
  5. 加入: 加入已經存在的虛擬主機

新增 Ubuntu 作業系統設定

所以要新增新的虛擬機器是按「新增」。

這裡先點選「專家模式」,專家模式可以一併設定虛擬機器的所有設定。

記憶體大小根據每個人電腦的性能做調整,虛擬主機沒用來做什麼事最多4Gb (4 * 1024Mb) 就很夠用了。這裡要注意的一點是,虛擬機器的存放位置,當你要轉移虛擬機器時才不會找不到。

預設的虛擬機器存放位置位於使用者資料夾中的Virtual VMs資料夾,像我的使用者是qaz85,那虛擬機器就位於:

C:\Users\qaz85\VirtualBox VMs

從這張圖可以看到院伺服器的磁碟配置是由兩個 1Tb 的硬碟組成,且用Raid-1 (映射模式) 將伺服器同時映射備份至另一個硬碟。

$ lsblk
NAME                       MAJ:MIN RM   SIZE RO TYPE   MOUNTPOINT
sdb                          8:16   0 931.5G  0 disk
├─sdb2                       8:18   0 852.5G  0 part
├─sdb3                       8:19   0    32G  0 part
├─sdb1                       8:17   0   512M  0 part
└─isw_ecbbadhihd_Raid1     253:0    0   885G  0 dmraid
  ├─isw_ecbbadhihd_Raid1p1 253:1    0   512M  0 part   /boot/efi
  ├─isw_ecbbadhihd_Raid1p2 253:2    0 852.5G  0 part   /
  └─isw_ecbbadhihd_Raid1p3 253:3    0    32G  0 part   [SWAP]
sr0                         11:0    1  1024M  0 rom
sda                          8:0    0 931.5G  0 disk
├─sda2                       8:2    0 852.5G  0 part
├─sda3                       8:3    0    32G  0 part
├─sda1                       8:1    0   512M  0 part
└─isw_ecbbadhihd_Raid1     253:0    0   885G  0 dmraid
  ├─isw_ecbbadhihd_Raid1p1 253:1    0   512M  0 part   /boot/efi
  ├─isw_ecbbadhihd_Raid1p2 253:2    0 852.5G  0 part   /
  └─isw_ecbbadhihd_Raid1p3 253:3    0    32G  0 part   [SWAP]

所以這裡也選擇跟院伺服器一樣的1000Gb做為系統硬碟,類型與版本記得設定為 Linux 與 Ubuntu 64位元 版本。完成之後點擊「建立」。

這裡我會選 VMDK 格式的原因是因為,如果要轉移虛擬主機檔案時,單一個檔案會輕易地超過 4Gb,而超過此上限得檔案在複製時,如果目的地的裝置格式不是 ntfs 的話,會沒有辦法複製。為了預防這個問題,我在這邊先選擇 VMDK 作為我虛擬主機的檔案格式。

這裡如果選擇「固定大小」會新增一個跟你設定的檔案大小一樣大的虛擬機器檔案,除非你的硬碟很大,否則不建議這麼做。

完成後,會在 Virtual Machine 的選單左邊看見剛剛新建的虛擬機器,不過此時的虛擬機器內還沒有作業系統。

於 VirtualBox 安裝作業系統

在安裝作業系統之前,要先下載作業系統,因為目前的院伺服器系統是 Ubuntu 、我自己的 VPS 也是 Ubuntu ,而且我摸得比較熟的也是 Ubuntu 那有什麼理由換掉呢?所以這裡我也以 Ubuntu 作為我們院伺服器主要的系統。

進到 Ubuntu 官方網站的下載介面,這次我們選擇伺服器版本 (Ubuntu Server) 代替以往的桌面版本 (Ubuntu Desktop)。因為如果是伺服器,不需要圖形介面就可以管理了,相對於桌面版本也較節省資源。

選擇「Option 2 - Manual server Installation」選項之後,按上面的綠色按鈕「Download Ubuntu Server 20.04.2 LTS」會跳轉到下載頁面,開始下載 Ubuntu 系統映像檔案 (*.iso)。

其他選項的簡易說明:

  • Option 1 - Instant Ubuntu VMs: Multipass 是快速部屬虛擬機器的軟體,詳細說明可以看這裡,而這裡我們已經選用 VirtualBox 了所以不會用到

  • Option 2 - Manual server installation: 傳統的下載映像檔案

  • Option 3 - Automated server provisioning: 利用 MaaS (Metal-as-a-Service) 安裝虛擬機。MaaS是管理數台虛擬主機用的服務,並不局限於 Ubuntu,Windows、CentOS 與 ESXi都可以在上面部屬。

待下載完成後,開啟剛剛創建的「MCU-ASIS」虛擬主機,會跳出一個選擇啟動磁碟的訊息提示視窗,這裡我們點擊右下角的資料夾📁。

按「加入」並選擇剛剛下載下來的映像檔案 (ubuntu-20.04.2-live-server-amd64.iso)。加入完成後按「選擇」,接著按「開始」掛載映像檔案至虛擬主機中開始安裝。

語言

稍待 Ubuntu 作業系統映像檔載入後,安裝程式會跳出選擇語言的畫面,在這裡選擇適合你的語言。

在安裝過程中使用方向鍵⬆️⬇️⬅️➡️ (選擇)、Enter↪️ (確認) 與 Esc (返回) 操控安裝程式介面。

鍵盤配置

這裡可以設定鍵盤的:

  • Layout (布局): 鍵盤的語言

  • Variant (鍵位): 一般在台灣都是用 QWERTY 配置,詳細說明可以在找到

網路連線

這裡可以設定 Ubuntu 的網路連線,預設是由 DHCP 設定,通常不用變更,如果這裡連線失敗,也可以等開機後再做設定。

Proxy

除非網路需要設定 proxy (代理伺服器),否則不需要設定。

鏡像 (Mirror)

同上,不需要特別設定 mirror (鏡像),安裝程式會自動判斷選擇哪個地方的鏡像網址更新。

安裝程式更新 (可能不會出現)

如果出現了這個畫面代表安裝程式有新的版本,可以在安裝時順便更新,當然,也可以在系統安裝完後更新。

系統空間配置 (Raid-1)

這裡選擇下面的「Custom storage layout」。以下 Raid-1 相關的設定是參考 (Evangelou 2020) 的 Gist 翻譯成中文寫的。

  • 如果選錯了、或是硬碟中有已經分割好的磁區也沒關係,從 AVAILABLE DEVICES 下面選擇硬碟 ➜ 「Reformat」 ➜ 「Reformat」,這會把硬碟格式化。
  • 選擇第一個磁碟 ➜ 「Use As Boot Device」 當作開機磁碟

  • 對第二個磁碟「VBOX_HARDDISK_VBdc8cc122-e9b43569」也做同樣的事情。

目前版本 20.04.2 live server 有個 bug,當你要新增為開機硬碟 (Boot Device) 時,要在建立其他三個分區 (//boot[SWAP])之前,先設定好,不然 1Mb 的 grub 分區會消失。(我只有從現過錯誤一次 2021.07.21)

  • 接著為 //boot[SWAP] 做分區。

    • /: 系統根目錄磁區

    • /boot: 開機磁區

    • [SWAP]: SWAP (記憶體置換空間) 主要功能是當記憶體滿載時,會把現在沒有用到的程序先放到 SWAP 中,空給目前正在運行的程式使用

  • 首先為 /boot 分區,通常開機磁區 512 Mb ~ 1Gb 就很夠用了,看你喜好,這裡我選擇 1Gb。選擇第一個磁碟 ➜ 「Add GPT Partitation」,照下面的設定設定後,按「Create」。

    • Size: 1G

    • Format: [ Leave unformatted ▾ ]

  • 對第二顆硬碟做同樣的事。

  • 再來是 [SWAP] 磁區,一般來說會用實體記憶體容量 ⨉ 2 作為 [SWAP] 磁區的容量,這裡我怕空間太少先用 32Gb。選擇第一個磁碟 ➜ 「Add GPT Partitation」,照下面的設定設定後,按「Create」。

    • Size: 32G

    • Format: [ Leave unformatted ▾ ]

  • 對第二顆硬碟做同樣的事。

  • 最後才是系統硬碟 / ,系統硬碟使用 /boot[SWAP]grub 剩下來的空間。選擇第一個磁碟 ➜ 「Add GPT Partitation」,照下面的設定設定後,按「Create」。

    • Size: 留空 預設為剩下硬碟的容量,正是我們所要的

    • Format: [ Leave unformatted ▾ ]

  • 對第二顆硬碟做同樣的事。

  • 接著設定 Raid-1。選取「[ Create software RAID (md) ▸ ]」,選取兩個「partition 2」建立 md0 softRaid 磁區

  • 同上,選取「[ Create software RAID (md) ▸ ]」,選取兩個「partition 3」建立 md1 softRaid 磁區

  • 同上,選取「[ Create software RAID (md) ▸ ]」,選取兩個「partition 4」建立 md2 softRaid 磁區

  • 選擇 md0 (new) ➜ format ➜ Format: 選擇 ext4 格式 ➜ Mount: 掛載於 /boot ➜ 完成後選擇 Done

  • 選擇 md1 (new) ➜ format ➜ Format: 選擇 swap 格式 ➜ 完成後選擇 Done

  • 選擇 md2 (new) ➜ format ➜ Format: 選擇 ext4 格式 ➜ Mount: 掛載於 / ➜ 完成後選擇 Done

  • 設定完成🎉,整體設定截圖:

  • 在最下面選擇「Done」,跳至下一步

使用者設定

這邊我是用院伺服器預設的 hostname 與 使用者設定。

  • Your name: fintech

  • Your server’s name: fintech06

  • Pick a username: fintech

  • Choose a password: fintech

  • Confirm your password: fintech

OpenSSH 設定

OpenSSH 是使用 SSH 通訊協定來遠端連線電腦的工具。防止連線中被竊聽、劫持或是其他攻擊。詳細設定可以參考 DigitalOcean 中的教學

從 Github 匯入已經儲存的 public key

這裡將 Allow password authentication over SSH 取消打勾,經由 SSH 連線至虛擬主機時,關閉使用者密碼認證,改由 SSH key pairs 登入。

如果沒有持有 Github 帳號儲存的 public key,請把 Allow password authentication over SSH 打勾,待上傳完 public key 再把使用密碼登入關閉。

另外,我已經透過 Github 儲存過我的 public key 副本,所以這邊可以直接從 Github 匯入 public key。

如果這邊不匯入的話,也可以待稍後開機後再用指令 gh-import-id-github <username> 匯入。

匯入成功後就能經由含有 Github 副本的 SSH key pairs 主機連線至虛擬機器

安裝完成後重新啟動

Ubuntu 的基本設定

這章主重心主要會在從本機存取虛擬機器與虛擬機器的基本設定。

事前準備

OpenSSH

前面第一章在安裝時,也有碰到 OpenSSH 伺服器設定的環節,不過那並不完整,是給已經擁有透過 ssh-keygen 產生的 ssh key pairs 的人看的。在這個小節會逐步解釋,從 OpenSSH client 安裝、產生 ssh key pairs 最後到連線。

適合各個系統的連線流程

要連接到虛擬機器的 OpenSSH 伺服器之前,你需要有一個可以讓你連接的 OpenSSH 客戶端。

MacOS 或 其他 Unix-like 系統

如果你是 Linux 或是 MacOS 系統,通常都有內建 OpenSSH 客戶端,可以直接跳至 以 OpenSSH Client 產生 key 的環節,Windows 與 Linux 使用 OpenSSH Utility 產生 ssh key pairs 的流程是一樣的。

Windows 系統

而 Windows 用戶不用擔心,Windows 用戶連線至 OpenSSH 伺服器的方法有很多種,就我已知的方法如下:

  1. 已經擁有 SSH key pairs 的前提下,可以使用 SSH 通訊協定連線的軟體,如:

    • PuTTY

    • Termius

    • Chrome 瀏覽器的任何一個 SSH 擴充套件

    pros:

    • 很快;安裝完就能設定 SSH 連線

    cons:

    • 經由第三方軟體連線,PuTTY 調整終端機主題很辛苦
  2. 直接在 Windows 10 內啟動 OpenSSH 用戶端,透過內建的 PowerShell SSH 連線至虛擬主機。

    pros:

    • 跟第一個方法差不多快,也可以使用 Windows Terminal 客製化主題

    cons:

    • 你要額外學習 Windows 怎麼對檔案設定權限
  3. 在 Windows 10 內安裝 Windows 子系統 (Windows Subsystem for Linux; WSL),然後直接在 Linux 環境透過 OpenSSH 連線至虛擬主機。

    pros:

    • 可以學習到很多東西, Linux 可以用的在 Windows 的 WSL 內都可以使用,操作可以照搬到 WSL 上面。目前我是使用這個方式連線。

    cons:

    • 安裝過程所需的時間會根據每個人的經驗有所差異,需要從頭開始設定 Linux。

產生供 ssh 連線用的 key pairs

在 Windows 要產生 ssh key pairs 有兩種辦法,第一種是經由內建的 OpenSSH Client 產生,另一種是經由 PuTTY 所附的工具產生。

以 OpenSSH Client 產生 key

Step 1 — 安裝 OpenSSH Client (Linux 使用者可以跳過)

Windows 10 已經有內建在 Windows 的「應用程式與功能」內,預設是沒有安裝的。啟動流程如下:

  • 點擊「開始」

  • 打開「設定⚙」

  • 選取「應用程式」 ➜ 「應用程式與功能」 ➜ 找到黑體字「程式與功能」,並點選下面的「選用功能」

  • 在已安裝的篩選列上面篩選 ssh ,如果沒有,請在頁面頂端點選「新增功能」,然後:

    • 找到「OpenSSH 用戶端」後,點選安裝

安裝完成後,你可以打開「命令提示字元」或是「PowerShell」輸入 ssh 來確認是否安裝完成。

PS C:\Users\qaz85> ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]
Step 2 — 產生 ssh key pairs

接著,可以使用 ssh-keygen 指令產生 key pairs,加密方式有 rsa、dsa、ed25519 與 ecdsa ,預設的加密方式是 rsa ,詳細指令用法可以透過 ssh-keygen --help 指令查詢,這裡我們用最簡單的 ssh-keygen 指令就行。

ssh-keygen

Windows 的用戶預設會把 key pair 儲存在 C:\Users\<USERNAME>\.ssh\ 的位置,而 Linux 的用戶會儲存在 ~/.ssh/ 的位置。

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\<USERNAME>/.ssh/id_rsa):

這裡是詢問你要不要把產生的 ssh key 重新命名,一般不會動到它的名字,按 Enter↩︎,接續下一步。

Created directory 'C:\Users\<USERNAME>/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

一旦你設定了 key pairs 的密碼,你每次連線時,都要再輸入一次密碼才能連線。如果不想那麼麻煩的話,可以按 Enter↩︎ 保持留空。

Your identification has been saved in C:\Users\<USERNAME>/.ssh/id_rsa.
Your public key has been saved in C:\Users\<USERNAME>/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8NE76AD294Tjze76pEPtvZgqaqw9OuCF7T8HWPo6fUc qaz85@DESKTOP-OH6HA84
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|         .       |
|    o . . .      |
|   . + o + .     |
|  o + o S.+      |
|.. = . =.E..     |
|..o.o ..+.=.     |
| ..+++.o.=.o.    |
|  o**++.=** ..   |
+----[SHA256]-----+

產生完畢,儲存在 C:\Users\<USERNAME>\.ssh\id_rsa 的檔案是 private key,而另一個 id_rsa.pub 的檔案是 public key。

以 PuTTY 產生 key

另一個方法不會需要你手動安裝 OpenSSH Client,不過、一樣地,要安裝PuTTY 程式。

Step 1 — 安裝 PuTTY

到開發者的網站,然後下載適合你 Windows 的版本 (副檔名為 *.msi 的安裝程式)

根據你的需求設定安裝程式

待安裝程式安裝完成

安裝完成後,點選「開始」,找到 PuTTYgen開啟,或是點選「開始」,鍵入 puttygen 後按 Enter↩︎

Step 2 — 經由 PuTTYgen 產生 ssh key pairs

跟 OpenSSH Client 一樣地,你可以在下方的 Types 選擇你偏好的加密方式。點選「Generate」開始產生 key,此時不要傻傻地在那邊等,要在程式進度條下方空白處隨意移動你的滑鼠鼠標。

完成後,可以在 Comment 的輸入框註解一下這個 key 是從哪裡來的,以後擁有多個 key pairs 時才不會搞混。當然你也可以用密碼保護這個 key pairs,如果有需要在 Key passphrase 與 Confirm passphrase 輸入一模一樣的密碼。

Step 3 — 妥善保存好產生的 Key

分別按下「Save public key」與「Save private key」找到適合的地方儲存它。

當你遺失了遠端主機的 key pairs,你再也不能透過遠端存取有使用過該 key pairs 的主機,只能透過直接接觸那台主機來更新的 key pairs。

將新增的 key pairs 上傳至目的地主機

當你擁有了 前一步產生的 key pairs,接下來要把 public key 上傳至虛擬機器。另外 public key 給別人看到是沒問題的,前面第一章的 OpenSSH設定 就已經有出現過我的 public key 了,public key 並不能用來產生 private key,它是用來認證這個 key 是否跟你所持有的 private key 相呼應。

上傳以 OpenSSH Client 產生的 ssh key pairs

如果你是的系統是 Linux 那指令會稍微短一些,上傳至遠端電腦的指令如下:

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 fintech@192.168.0.13
  • -i: i flag 代表的是你要上傳的 public key 檔案路徑

  • -p: p flag 則是目的地主機的 OpenSSH 伺服器的埠號

  • id_ed25519.pub 為我產生的其他的 key pair,如果你前面是照著我的步驟產生,這裡應該改為 id_rsa.pub

  • 這裡的 fintech 為第一章的使用者設定的預設使用者

  • 192.168.0.13 為我虛擬主機的 ip 位址,查詢 ip 位址可以先手動登入虛擬主機後,用 hostname -I 或是 ip addr show 指令查詢

完成後會提示你已經可以使用 ssh 連線

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/kuaz/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '22' 'fintech@192.168.0.13'"
and check to make sure that only the key(s) you wanted were added.

如果你是 Windows 的使用者也不用擔心多複雜,一樣一行指令就能搞定,這裡我是參考(Christopher 2020)的教學,指令如下:

cat $env:USERPROFILE\.ssh\id_rsa.pub | ssh fintech@192.168.0.13 "cat >> ~/.ssh/authorized_keys"
  • 這裡的 $env:USERPROFILE 為 Windows 內建環境變數,會根據現在的使用者變更,如果我的使用者名稱為 qaz855175b$env:USERPROFILE 對應的路徑就為 C:\Users\qaz855175b\,當然你可以直接把指令的 public key 路徑替換為 C:\Users\qaz855175b\.ssh\id_rsa.pub

  • id_rsa.pub 為產生的 public key 預設名稱

  • 這裡的 fintech 為第一章的使用者設定的預設使用者

  • 192.168.0.13 為我虛擬主機的 ip 位址,查詢 ip 位址可以先手動登入虛擬主機後,用 hostname -I 或是 ip addr show 指令查詢

其實 Linux 的 ssh-copy-id、和第一章的從 Github 匯入 public key ssh-import-id-gh 與這裡的 cat file >> ~/.ssh/authorized_keys 都是在做同一件事情,把 public key 貼到遠端伺服器的使用者的 authorized_keys 檔案裡面。

接著按 Enter↩︎,跳出輸入密碼提示,這裡輸入預設的使用者密碼 fintech

fintech@192.168.0.13's password:

輸入完後雖然沒有任何提示訊息,但其實已經可以使用 ssh 連線至遠端主機啦~

上傳以 PuTTY 產生的 ssh key pairs

PuTTY 產生的 public key 與 private key 格式比較特別,並不能直接把 public key 裡面的文字直接貼到遠端電腦的 ~/.ssh/authorized_keys 檔案裡面,需要經由 PuTTYgen.exe 讀取 *.ppk 才能得到正確格式的 public key。首先把 PuTTYgen 程式打開。

接著按「Load」把剛剛產生的 *.ppk 檔案讀取進來。會看到一行字「Public key for pasting into OpenSSH authorized_keys file」下面的可複製區域就是 public key,把它整段複製起來。

接著打開「PowerShell」或是「命令提示字元」,輸入:

echo "<YOUR_PUBLIC_KEY>" | ssh fintech@192.168.0.13 "cat >> ~/.ssh/authorized_keys"
  • <YOUR_PUBLIC_KEY> 替換成自己的 public key

  • 這裡的 fintech 為第一章的使用者設定的預設使用者

  • 192.168.0.13 為我虛擬主機的 ip 位址,查詢 ip 位址可以先手動登入虛擬主機後,用 hostname -I 或是 ip addr show 指令查詢

接著按 Enter↩︎,跳出輸入密碼提示,這裡輸入預設的使用者密碼 fintech

fintech@192.168.0.13's password:

輸入完成不會出現任何訊息是正常的,代表操作沒有問題且已經可以使用 PuTTY 連線了。

使用 SSH 連線至遠端主機

最後,使用 ssh 指令連接至遠端主機。

OpenSSH Client 產生的 key pairs 的連線方式:

使用 OpenSSH Client 產生的 pair keys 可以直接使用這個方法連線。這裡介紹幾個常常與 ssh 一起出現的 flag :

  • -v: verbose; 顯示連接時更詳細的訊息,debug時常用

  • -p: port; 遠端伺服器的埠號

  • -i: 手動指定 private key 位址

flag 通常會在指令後面隨後出現,flag前面會插入 -,而 flag 後面有時會需要加入詳細的設定,有時不用。flag 與 flag 之間用空格隔開,詳細指令的使用方法可以在 Linux 系統用 man <指令名稱> 查詢

假如我們要看連線的詳細訊息,且指定伺服器 port 為 60000與指定 private key 檔案位址等等,組合起來就是:

ssh -v -p 60000 -i ~/.ssh/id_rsa fintech@192.168.0.13

目前不需要加上任何 flag,連線指令為:

ssh fintech@192.168.0.13

一樣地,fintech 是使用者名稱,而192.168.0.13 是 OpenSSH 伺服器的 ip 位置,輸入完後按 Enter↩︎

這邊打 yes 即可,確認連接目的地沒有錯之後,會把 fingerprint 寫入 ~/.ssh/known_hosts 中,以後不再詢問。

The authenticity of host '192.168.0.13 (192.168.0.13)' can't be established.
ECDSA key fingerprint is SHA256:/HoocrLXe63zycdlmkh/+U3RuUfkawNq/xA0gTJmqmM.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

這裡不用指定 private key 的原因是因為,當你用 ssh 連線至目的地伺服器且你沒有指定 Identity File (private key) 時,ssh 會一個 key 一個 key 拿去問伺服器這個 key 可不可以使用。

連接成功~

PuTTYgen 產生的 key pairs 的連線方式:

SSH 連線方式大同小異:

  • 首先點選「開始」,鍵入 PuTTY 打開客戶端

  • 在左邊的 「Category:」 下,選取 「Session」

  • 於 Host Name 輸入「使用者@目的地 IP」,像是「fintech@192.168.0.13

    你可以點選下面的「Default Settings」後,接著按「Save」會把剛剛輸入的 IP 與 Port 儲存至「Default Settings」內,當然你也可以自己取一個新的名字。

  • 接著展開左邊 「Category:」 下的「Connection」 ➜ 點選「SSH」 ➜ 再點選「Auth」,於最下面的「Private key file for authentication:」點選「Browse…」選取 *.ppk 檔案位置

  • 完成後點選「Open」連線

與使用 ssh 指令連線相同,都會先提醒你目的地是否正確。確認無誤按下「Accept」

連接成功!

References

Christopher, Hart. 2020. “Windows 10 OpenSSH Equivalent of "Ssh-Copy-Id".” Windows 10 OpenSSH Equivalent of "Ssh-Copy-Id" – Christopher Hart - IT Adventures – Documenting My Discoveries in the IT World. https://www.chrisjhart.com/Windows-10-ssh-copy-id/.
Evangelou, Fotis. 2020. “Looking to Create a Software RAID 1 Setup for Your 2-Disk Server on Ubuntu Server 20.04?” Gist.io. https://gist.io/@fevangelou/2f7aa0d9b5cb42d783302727665bf80a.